* a not-present fault (by flipping two bits). */
ASSERT(regs->error_code & PFEC_page_present);
regs->error_code ^= (PFEC_reserved_bit|PFEC_page_present);
+ reset_early_unshadow(v);
perfc_incrc(shadow_fault_fast_gnp);
SHADOW_PRINTK("fast path not-present\n");
return 0;
/* If we are writing zeros to this page, might want to unshadow */
if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) )
check_for_early_unshadow(v, mfn);
+ else
+ reset_early_unshadow(v);
sh_mark_dirty(v->domain, mfn);
/* If we are writing zeros to this page, might want to unshadow */
if ( likely(bytes >= 4) && (*(u32 *)addr == 0) && is_lo_pte(vaddr) )
check_for_early_unshadow(v, mfn);
+ else
+ reset_early_unshadow(v);
sh_mark_dirty(v->domain, mfn);
/* If we are writing zeros to this page, might want to unshadow */
if ( *(u32 *)addr == 0 )
check_for_early_unshadow(v, mfn);
+ else
+ reset_early_unshadow(v);
sh_mark_dirty(v->domain, mfn);